사이드카 모드

개요

사이드카 모드는 이스티오의 기본적인 방식으로, 모든 워크로드에 프록시를 배치하는 구조를 가지고 있다.
이때 프록시로는 고성능 경량 프록시인 엔보이가 들어가며, 이 엔보이에 컨트롤 플레인이 설정을 넣는 역할을 한다.

이스티오 개발 당시 엔보이 커뮤니티와 긴밀한 협업이 있기도 했고, 엔보이 자체도 메시 환경을 염두하여 개발이 됐었다.
그러다보니 엔보이는 자연스레 서비스 메시 환경에서 사용하기에 적합하도록 만들어졌다.
어느 정도냐, 서비스 메시를 위한 기능은 물론이요, 애초에 서비스 메시 환경이어야 설정이 간편해지는 정도다.

기능

이스티오에서 바라는 모든 기능은 사실 엔보이가 제공하는 기능이라 해도 과언이 아니다.

엔보이를 조금 파보면 알겠지만, 실상 이스티오에서 하는 다양한 설정은 엔보이의 설정 방법과 매우 유사하다.
이스티오가 아니라 그냥 엔보이 메시라 해야 하는 거 아닌가 싶을 정도임
그만큼 이스티오를 잘 다루기 위해서는 엔보이의 구조를 아는 것이 중요하다.

구조

실제로 파드가 배치되면 해당 파드에 사이드카 컨테이너가 하나 배치된다.
이 컨테이너에는 pilot-agent가 들어간다.

pilot agent는 각종 필요한 세팅을 한 이후, 정말 트래픽을 처리해낼 엔보이를 기동시킨다.
그래서 엔보이가 프록시로 배치될 때 실제 컨테이너 프로세스를 구체적으로 따져보면 한 단계의 층위가 더 있다고도 할 수 있다.

사실 사이드카로 주입되는 컨테이너의 메인 프로세스는 엔보이가 아니라 pilot-agent이다.
이 에이전트가 각종 환경 설정과 컨트롤 플레인과의 통신을 담당하면서 엔보이를 기동시켜주는 것이다.
image.png

설정되는 포트가 많아서 어지럽지만, 결국 앱 컨테이너 트래픽과 직접적으로 연관되는 포트는 15006, 15001이고, 전반적인 설정을 볼 때 사용되는 포트가 15020 이란 것 정도만 알면 된다.
여기에 엔보이 심화 디버깅을 할 때 15000 정도가 유용하다.

컨트롤 플레인과의 통신

그러면 구체적으로 어떻게 컨트롤 플레인으로부터 각종 설정을 받아올까?
일단 아래 컨트롤 플레인 부분을 보면 알겠지만, 컨트롤 플레인에서는 15012 포트를 통해 각종 설정을 노출해주고 있다.
이 포트에 연결돼어 각종 설정을 받아오는 역할은 pilot agent이다.
에이전트는 엔보이를 위한 일종의 프록시 역할로서도 동작한다는 것이다.
image.png
에이전트는 이렇게 두 가지 유닉스 소켓 파일을 열어둔다.
image.png
엔보이 부트스트랩 파일을 보면 ADS 설정을 받을 때 xds-grpc라는 클러스터로 연결하는 것을 알 수 있는데,
image.png
해당 클러스터는 사실 에이전트가 열고 있는 소켓 파일이다.
image.png
SDS 관련해서는 Istio Security를 참고하고 보는 게 좋은데, 아무튼 이것도 결국 유닉스 소켓을 쓴다는 것은 똑같다.

관련 문서

EXPLAIN - 파생 문서

이름2related생성 일자
이스티오 컨트롤 플레인 성능 최적화이스티오2025-05-18 02:29
이스티오 컨트롤 플레인 메트릭istiod2025-05-18 15:45

기타 문서

Z0-연관 knowledge, Z1-트러블슈팅 Z2-디자인,설계, Z3-임시, Z5-프로젝트,아카이브, Z8,9-미분류,미완
이름1코드타입생성 일자
6W - 이스티오 컨트롤 플레인 성능 최적화Z8published2025-05-18 02:29

참고